package top.szhome.develop.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import top.szhome.framework.starter.db.support.BaseEntity;

import java.util.Objects;

/**
 * 模型实体对象
 *
 * @author 唐加利
 * @date 2023/08/21
 **/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("t_model")
public class Model extends BaseEntity {

    /**
     * 序列号
     */
    private static final long serialVersionUID = 1L;

    /**
     * 数据源
     */
    private Long datasourceId;

    /**
     * 所属工程
     */
    private Long projectId;

    /**
     * 表名
     */
    private String tableName;

    /**
     * 表前缀
     */
    private String tablePrefix;

    /**
     * 表注释
     */
    private String comments;

    /**
     * 模型编码
     */
    private String code;

    /**
     * 模型名称
     */
    private String name;

    /**
     * 模块编码
     */
    private String module;

    /**
     * 模块名称
     */
    private String moduleName;

    /**
     * 作者
     */
    private String author;

    /**
     * 树形模型
     */
    private Boolean tree;

    /**
     * 表单布局
     */
    private String layout;

    /**
     * 是否分页
     */
    private Boolean page;

    /**
     * 备注
     */
    private String remark;

    /**
     * 排序
     */
    private Integer sort;

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }

        if (!(o instanceof Model)) {
            return false;
        }

        if (!super.equals(o)) {
            return false;
        }

        Model model = (Model) o;
        return datasourceId.equals(model.datasourceId) && tableName.equals(model.tableName);
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), datasourceId, tableName);
    }
}
